package com.heima.article.config;

import lombok.extern.log4j.Log4j2;

/**
 * 数据源切换处理
 * 
 * @author ruoyi
 */
@Log4j2
public class DynamicDataSourceContextHolder
{
    /**
     * 使用ThreadLocal维护变量，ThreadLocal为每个使用该变量的线程提供独立的变量副本，
     *  所以每一个线程都可以独立地改变自己的副本，而不会影响其它线程所对应的副本。
     */
    private static final ThreadLocal<String> CONTEXT_HOLDER = new ThreadLocal<>();
    /**
     * 设置数据源的变量
     */
    public static void setDataSourceType(String dsType)
    {
        log.info("切换到{}数据源", dsType);
        System.out.println("切换到"+dsType+"数据源");
        CONTEXT_HOLDER.set(dsType);
    }
    /**
     * 获得数据源的变量
     */
    public static String getDataSourceType()
    {
        return CONTEXT_HOLDER.get();
    }
    /**
     * 清空数据源变量
     */
    public static void clearDataSourceType()
    {
        // 及时情况ThreadLocal中的变量数据
        CONTEXT_HOLDER.remove();
    }
}
